iT邦幫忙

2024 iThome 鐵人賽

DAY 11
3
Software Development

Laravel 隨筆學習札記系列 第 11

Day11 - 小精靈的書店奇蹟:用 factory 魔法擴充藏書

  • 分享至 

  • xImage
  •  

好唷!來說說小鎮上精靈們的書店草創時期小故事 - 第 2 篇~~😊

下一個挑戰:如何保持書籍資料的多樣性,需要更多的書籍

然而,隨著書店開張的日子臨近,小精靈們又面臨了另一個挑戰:如何保持書籍資料的多樣性。雖然他們已經有了幾本書,但為了吸引更多顧客,他們需要更多的書籍。

這時,小精靈們想到了一個新的主意:使用「factory」魔法來生成隨機的書籍資料。他們使用 Artisan 命令 中的 make:factory 創建了一個名為 BookFactory 的新器具,這樣就能不用手動,輕鬆生成各種書籍了。

--model=Book 告訴 Laravel 工廠是要針對 Book 模型唷!

php artisan make:factory BookFactory --model=Book

可以看到在檔案中有一個方法:definition ,我們接著通過 fake 輔助函式,就能方便地產生各種類型的隨機資料

use App\Models\Book;
use Illuminate\Database\Eloquent\Factories\Factory;

class BookFactory extends Factory
{
    protected $model = Book::class;

    public function definition():array
    {
        return [
		        'title' => fake()->sentence(),
		        'author' => fake()->name(),
		        'published_year' => fake()->year(),
		        // 'genrec' 會在 'Fiction' 和 'Non-Fiction' 之間交替
		        'genre' => fake()->randomElement(['Fiction', 'Non-Fiction'
        ];
    }
}

大規模填充資料

小精靈們將 BookFactory 融入到 BookSeeder 中,

使用 create 方法,這樣他們就可以一次性生成大量的書籍資料

使用 count 方法,創建想要的數量

class BookSeeder extends Seeder
{
    public function run()
    {
		    // 新增 100 筆資料
        Book::factory()->count(100)->create();
    }
}

當他們執行 db:seed 時,書店的資料庫中瞬間填滿了各式各樣的書籍,應有盡有。


參考資料

  1. Laravl官方網站 - Using Model Factories 使用模型工廠
  2. Laravl官方網站 - Eloquent: Factories
  3. How to use Factory for generate testing or dummy data with Laravel

踏著身心靈的塔羅腳步,轉向技術與邏輯的工程師之路,就藉由塔羅日抽來紀錄今日的學習與生活吧!

寶劍六:鐵人賽走到今天也完成了1/3了,覺得文章有很多可以進步的空間,但沒關係,先讓我們繼續向前行!

It does not matter how slowly you go so long as you do not stop.

走得多慢都沒關係,只要妳不停下腳步。

- Andy Warhol 安迪‧沃荷


上一篇
Day10 - Laravel Database: Seeding,打造小鎮書店的秘訣
下一篇
Day12 - 咖啡與甜點的完美搭配:Lazy Loading vs. Eager Loading
系列文
Laravel 隨筆學習札記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言